import Vue from 'vue'
import { axios, fileAxios } from '@/utils/request'

// post
export function postAction (url, parameter) {
  return axios({
    url: (Vue.prototype.$prePath ? Vue.prototype.$prePath : '') + url,
    method: 'post',
    data: parameter
  })
}

// put
export function putAction (url, parameter) {
  return axios({
    url: (Vue.prototype.$prePath ? Vue.prototype.$prePath : '') + url,
    method: 'put',
    data: parameter
  })
}

// get
export function getAction (url, parameter = null) {
  return axios({
    url: (Vue.prototype.$prePath ? Vue.prototype.$prePath : '') + url,
    method: 'get',
    params: parameter
  })
}

// deleteAction
export function deleteAction (url, parameter) {
  return axios({
    url: (Vue.prototype.$prePath ? Vue.prototype.$prePath : '') + url,
    method: 'delete',
    params: parameter
  })
}

/**
 * 下载文件 用于excel导出
 * @param url
 * @param parameter
 * @returns {*}
 */
export function downFile (url, parameter) {
  return fileAxios({
    url: (Vue.prototype.$prePath ? Vue.prototype.$prePath : '') + url,
    data: parameter,
    method: 'post',
    responseType: 'blob'
  })
}

export function download (url, parameter) {
  return fileAxios({
    url: (Vue.prototype.$prePath ? Vue.prototype.$prePath : '') + url,
    params: parameter,
    method: 'get',
    responseType: 'blob'
  })
}

/**
 * 下载文件
 * @param url 文件路径
 * @param fileName 文件名
 * @param parameter
 * @returns {*}
 */
export function downloadFile (url, parameter) {
  return downFile(url, parameter).then((response) => {
    if (!response.data || response.data.size === 0) {
      // Vue.prototype.$message.warning('文件下载失败')
      const errObj = { retCode: '9999', retMsg: '文件下载失败' }
      throw errObj
      // return
    }

    if (typeof window.navigator.msSaveBlob !== 'undefined') {
      window.navigator.msSaveBlob(new Blob([response.data], { type: 'application/octet-stream' }), decodeURI(response.headers['content-disposition'].split('=')[1]))
    } else {
      const url = window.URL.createObjectURL(new Blob([response.data]))
      const link = document.createElement('a')
      link.style.display = 'none'
      link.href = url
      link.setAttribute('download', decodeURI(response.headers['content-disposition'].split('=')[1]))
      document.body.appendChild(link)
      link.click()
      document.body.removeChild(link) // 下载完成移除元素
      window.URL.revokeObjectURL(url) // 释放掉blob对象
    }
    return { retCode: '0000', retMsg: 'success' }
  })
}

/**
 * 文件上传 用于富文本上传图片
 * @param url
 * @param parameter
 * @returns {*}
 */
export function uploadAction (url, parameter) {
  return axios({
    url: url,
    data: parameter,
    method: 'post',
    headers: {
      'Content-Type': 'multipart/form-data' // 文件上传
    }
  })
}

/**
 * 获取文件服务访问路径
 * @param avatar
 * @param subStr
 * @returns {*}
 */
export function getFileAccessHttpUrl (avatar, subStr) {
  if (!subStr) subStr = 'http'
  if (avatar && avatar.startsWith(subStr)) {
    return avatar
  } else {
    if (avatar && avatar.length > 0 && avatar.indexOf('[') === -1) {
      return window._CONFIG.staticDomainURL + '/' + avatar
    }
  }
}
